import { generate } from "./generator";
import { parseHTML } from "./parse";

export function compileToFunction(template) {
  // 1.template => ast语法树
  const ast = parseHTML(template);
  // 2.ast语法树 => render函数（render方法执行后就是虚拟dom）
  let astStr = generate(ast); //_c("div",id:"app",_v(""),_c("div",class:"content",_v(_v("主页面"),_s(name),_v("e}}"),_s(age),_v(e}})),_v("")),_c("p",style:{"color":"red"},_v("静态节点"),_v("")))
  //转为
  //astStr='_c("div",{id:"app"},,_c("div",{class:"content"},_v(_v("主页面"),_s(name)),),_c("p",{style:{"color":"red"}},_v("静态节点"),))'
  let renderFnStr = `with(this){ \r\nreturn ${astStr} \r\n}`;
  console.log(renderFnStr);
  let render = new Function(renderFnStr);
  return render;
  // 3.render函数 => 最终的虚拟dom
}
